package tech.aistar.corejava.day09.strings;

import java.util.Arrays;

/**
 * @author success
 * @version 1.0
 * @description:本类用来演示:学习JDK关于字符串提供的API
 * @date 2019/7/25 0025
 */
public class StringMethod {
    public static void main(String[] args) {
        //通过new对象
        String str = new String("abc");

        //获取字符串的长度
        System.out.println(str.length());//3

        //根据字符串下标来返回对应位置的char值
        //下标也是从0开始 - 字符串长度-1
        //如果越界 - java.lang.StringIndexOutOfBoundsException字符串下标越界异常
        System.out.println(str.charAt(2));//c

        //String concat(String str);//拼接字符串
        String result = str.concat("def");//底层新建一个char[]数组,用来保存abcdef

        System.out.println(str);//abc

        System.out.println(result);//abcdef

        // boolean contains(CharSequence s) ;//多态 - 面向接口编程,方法的参数类型写成了接口,那么可以传入这个接口的任意实现类

        //判断字符串中是否某个字符序列
        System.out.println(str.contains("cb"));//true

//        for (int i = 0; i < str.length(); i++) {
//            System.out.println(str.charAt(i));
//        }

        //判断字符串是否以某个后缀结束
        System.out.println("xxx.gif".endsWith(".gif"));//true

        //判断字符串是否以某个前缀开头
        System.out.println("aistar".startsWith("ai"));//true

        System.out.println("abc".equals("abc"));//true,说明String类肯定重写了equals方法

        String name = "沥吮赁";

        //可以利用字节数组进行加密和解密操作.
        //字节数组
        //将字符串转换成字节数组
        byte[] buf = name.getBytes();
        System.out.println(Arrays.toString(buf));

        for (int i = 0; i < buf.length; i++) {
            buf[i]^=888;//buf[i] = buf[i]^888;
        }

        //通过String的构造,将字节数组转换成字符串
        //String(byte[] buf);
        String wstr = new String(buf);
        System.out.println(wstr);

        System.out.println("===================");

        //返回字符串中某个字符第一次出现的位置
        // int indexOf(int ch)
        //char - > int

        System.out.println("bacad".indexOf('a'));//1
        //lastOf

        //boolean isEmpty();//判断字符串长度是为0
        System.out.println("".isEmpty());//true

        System.out.println("     ".isEmpty());//false

        //trim();//去除有效字符串两边的空格
        System.out.println("   abc   ".trim());//abc
        System.out.println("   abc   ".trim().length());//3
        System.out.println("     ".trim().length());//0

        System.out.println("I Love Girl".replace("Girl","Java"));

        System.out.println("===");
        //字符串的截取
        String x = "hello world";
        String y = x.substring(1);//从下标1位置开始截取

        //都是代表下标
        String z = x.substring(1,4);//[1,4)

        System.out.println("x:"+x);//hello world
        System.out.println("y:"+y);//ello world
        System.out.println("z:"+z);//ell

        System.out.println("====");

        //转换大小写
        System.out.println("ABC".toLowerCase());
        System.out.println("abc".toUpperCase());

        //static String valueOf(int i);//将int类型转换成String
        String n = String.valueOf(10);//n = 10

        System.out.println("====");
        //将字符串转换成字符数组
        char[] arr = "abcdef".toCharArray();
        System.out.println(arr);

    }
}
